/*
 * 刻度尺插件基于zepto
 * code:humin
 * Emial:humin332@163.com
 */
;
(function($) {
	$.fn.scale = function(option) {
		var opts = $.extend({}, $.fn.scale.defaults, option); 
		var obj = $(this);
		var ScaleValue = opts.scaleSize==10?1:0.1;// 刻度尺值  
		var swipeStartValue=0; //保存触发值
		// 绘制刻度尺html 传入标题 默认值 单位
		var ScaleHtmlValue = function(title, value, SUnit) {
			var html = '<div class="scale_top"> <div style="width: 50%;margin-left: 10px;" class="scale_top_One"> '
					+ title + ' </div> <div style="width:30%;" class="val">';
			html += value
					+ ' </div> <div >'
					+ SUnit
					+ '</div> </div> <div class="scale_round"> <div class="scale_zjc">';
			html += '<span></span> </div> <div class="scale" style="-webkit-transform: translate3d(0px, 0px, 0px);">';
			var ic = 0; // 累计次数
			var startI = opts.scaleRangeMinVal;// 起始值
			var endI = opts.scaleRangeMaxVal;// 结束值
			if (opts.scaleSize == 100) {
				startI = startI * 10;
				endI = endI * 10;
			}
			endI = endI + 1;
			for (var i = startI; i < endI; i++) {
				ic++;
				if (i % 5 == 0) {
					if (ic == 5) {
						html += '<div > <span class="scale_bcm"></span> </div>';
					} else {
						var SetT = (opts.scaleSize == 100 ? ((i / 10) + '.0')
								: i);
						html += '  <div> <span class="scale_cm" ></span><label>'
								+ SetT + '</label> </div>';
						ic = 0;
					}
				} else {
					html += '<div> <span></span><label></label></div>';
				}
			}
			html += '</div></div>';
			obj.html(html);
			var sWidth = $(".scale_round").width() / 2; 
			$(".scale_zjc").css("margin-left", sWidth);//设置中间红色刻度尺标示
			$(".scale_top_One").width(sWidth -25);//设置显示值位置
		}
		// 判断是否已经绘制刻度尺过
		if (obj.find('.scale').length == 0) {
			// 刻度尺 刻度绘制
			ScaleHtmlValue(opts.Tile, ScaleValue, opts.Unit); 
			// 刻度尺事件绑定
			var bodyTouch = util.toucher(obj.find(".scale")[0]);
			bodyTouch.on('swipe', function(e) {
				// 拖动刻度尺处理
				SetLeftVal(e.moveX);
			}).on("swipeStart",function(e){
				//记录起始值
				swipeStartValue=obj.find(".scale").css("-webkit-transform").replace("translate3d(","").split("px")[0];
			});
		} 
		// 刻度尺移动处理
		var ScaleMoving = function(Value, SetLeft) {
			var ShowColor = "";
			if (parseFloat(Value) >= opts.NormalVal
					|| parseFloat(Value) < opts.WarnVal) {
				ShowColor = opts.NormalColor;
			}
			if (parseFloat(Value) >= opts.WarnVal) {
				ShowColor = opts.WarnColor;
			}
			if (parseFloat(Value) < opts.UnusuallyVal) {
				ShowColor = opts.UnusuallyColor;
			}
			if(opts.scaleSize==100){
				//Value=Value-10;
			}
			obj.find(".scale_top .val").css("color", ShowColor).html(
					Value); 
			obj.find(".scale").css('-webkit-transform','translate3d('+  SetLeft  +'px, 0, 0)');
		}
		// 拖动刻度尺核心处理
		var SetLeftVal = function(moveX) { 
		    var  SetLeft=parseInt(swipeStartValue)+moveX; 
		    var Value=obj.find(".scale").css("-webkit-transform").replace("translate3d(","").split("px")[0];
			if (Value !=undefined) { 
				Value=(((((obj.find(".scale_round").width()/2)-10)-SetLeft)/10)+10)*ScaleValue;
			} 
			Value=parseFloat(Value);
			// 判断超出部分和溢出部分
			if (parseFloat(Value) < opts.scaleRangeMinVal
					|| parseFloat(Value) > opts.scaleRangeMaxVal) {
				return false;
			}
			ScaleMoving(Value.toFixed(opts.scaleSize == 100 ? 1 : 0), SetLeft);
		}
		// 返回内置方法
		return {
			// 读取刻度尺值
			getScaleValue : function() {
				return obj.find(".scale_top .val").html();
			},
			// 设置刻度尺值
			setScaleValue : function(val) { 
				 var SetLeft=((obj.find(".scale_round").width()/2)-10)-((val/ScaleValue)-10)*10;
				 ScaleMoving(val.toFixed(opts.scaleSize == 100 ? 1 : 0), SetLeft);
			}
		}
	}
	$.fn.scale.defaults = {
		scaleSize : 100,// 刻度尺大小 小数位100 整数10
		scaleRangeMinVal : 1.0,// 刻度尺最小范围值
		scaleRangeMaxVal : 15.0,// 刻度尺最大范围值
		Tile : '血糖值',// 显示标题
		Unit : 'mmol/L',// 显示单位 
		WarnVal : 12.0,// 警告值
		WarnColor : "#FF0000",// 警告颜色
		NormalVal : 8,// 正常值
		NormalColor : "#2828FF",// 正常值颜色
		UnusuallyVal : 5,// 异常值
		UnusuallyColor : "#F9F900"// 异常颜色
	};
})(Zepto);